<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>二进制浮点数与舍入错误</title>
</head>

<body>
  <script>
    let x = .3 - .2
    let y = .2 - .1
    let z = .4 - .3
    // 由于舍入错误，.3和.2近似值的差与.2和.1近似值的差并不相等，这是所有使用二进制浮点数的编程语言共同的问题。它们都极其接近正确的值，完全能够满足开发需要，切记不用试图比较它们的相等性。
    console.log(x)
    console.log(y);
    console.log(z);
    console.log(x === y)
    console.log(.1 === x);
    console.log(.1 === y);
    // 原因在于JavaScript使用的浮点表示法是一种二进制表示法，可以精确地表示如1/2、1/8和1/1024等分数，然而常用的分数是十进制分数，无法精确地表示，只能近似地表示。在开发中最好用整数形式，避免小数。
  </script>
</body>

</html>